The creation and storage of digitized data has proliferated in recent years. Accordingly, techniques and mechanisms that facilitate efficient and cost effective storage of large amounts of digital data are common today. For example, a cluster network environment of nodes may be implemented as a data storage system to facilitate the creation, storage, retrieval, and/or processing of digital data. Such a data storage system may be implemented using a variety of storage architectures, such as a network-attached storage (NAS) environment, a storage area network (SAN), a direct-attached storage environment, and combinations thereof. The foregoing data storage systems may comprise one or more data storage devices configured to store digital data within data volumes.
Digital data stored by data storage systems may be frequently migrated and mirrored within the data storage system and/or between data storage systems during normal operation. For example, data storage systems may include disaster recovery (DR) resources that function as a backup for a primary storage resource. Other networks may provide for high availability (HA) resources that are configured to assist a primary storage resource when desired, e.g. during high traffic periods, to provide for faster data transfers. Such DR and HA systems obtain mirrored information of data residing on a primary storage resource.
In order to mirror information from a primary storage resource to a secondary storage resource, previous systems may utilize write cache that compiles write data from a client which is then stored to a more permanent storage location according to a pre-determined schema. For example, the write cache may be part of a DR node and function to compile data for the DR node until the cache resources are near full (or until another pre-determined condition is met), at which point the data residing on the write cache is transferred to DR storage. The point when write cache is cleared and its contents sent to storage may be referred to as a consistency point.
Significant issues with previous systems become apparent when attempting to resynchronize mirror resources. For example, in the event that a DR node becomes non-responsive and new data from a client is not being mirrored to the DR node, problems arise when bringing the DR node back on line. Specifically, the DR node must access information from the primary system and synchronize any changes in data which have been made since the last consistency point. However, this synchronization generally will affect client interaction with the storage system because the client cannot continue writing to the primary storage system while resynchronization is taking place due to the need to accurately track the contents of the storage system. Because of this, the performance provided to the client can suffer even when problems with secondary storage resources which are not currently being utilized are present.
Another issue with prior systems is that there are generally no usable methods to implement multiple mirror locations for a primary storage system. For example, prior art storage systems do not mirror a primary storage system that have separate HA and a DR nodes. Due to the added complexities which are apparent when utilizing both of these services, architectures which utilize both HA and DR resources place these resources at the same location (e.g. a remote DR location which may inhibit HA efficiency) and only utilize a single mirror. In other words, a layout with multiple mirror locations would require additional processing resources and includes other considerations which would generally cause such a layout to be discouraged. For example, the presence of multiple mirrored systems would exacerbate the above-noted problems as it would potentially double the likelihood of system down time, communication losses, and the like, which then potentially doubles the instances of needing resynchronization.